सी तार
स्ट्रिंगची व्याख्या शून्य ('\ 0') द्वारे संपुष्टात आणलेल्या वर्णांच्या एक-आयामी अॅरे म्हणून केली जाऊ शकते. वर्ण अॅरे किंवा स्ट्रिंग शब्द किंवा वाक्यांसारख्या मजकूरामध्ये फेरफार करण्यासाठी वापरली जाते. अॅरेमधील प्रत्येक वर्ण मेमरीचा एक बाइट व्यापतो आणि शेवटचे पात्र नेहमीच 0 असणे आवश्यक आहे. स्ट्रिंगमध्ये टर्मिनेशन कॅरेक्टर ('\ 0') महत्त्वपूर्ण आहे कारण स्ट्रिंग कोठे संपते हे ओळखण्याचा एकमेव मार्ग आहे. जेव्हा आम्ही स्ट्रिंग चार एस [10] म्हणून परिभाषित करतो, तेव्हा कॅरेक्टर एस [10] मेमरीमधील शून्यसह स्पष्टपणे प्रारंभ केले जाते. सी भाषेत स्ट्रिंग घोषित करण्याचे दोन मार्ग आहेत. चार अॅरेद्वारे स्ट्रिंग शाब्दिक द्वारे सी भाषेत चार अॅरेद्वारे स्ट्रिंग घोषित करण्याचे उदाहरण पाहूया.
Axar saiPca[10]={'jae', 'A', 'A', 'A', 'Ti', 'pai', 'Aae', 'mai', 'Pna', 'Ti', '\0'};
आम्हाला माहित आहे की, अॅरे इंडेक्स 0 पासून सुरू होते, म्हणून खाली दिलेल्या आकृतीप्रमाणेच त्याचे प्रतिनिधित्व केले जाईल.
स्ट्रिंग घोषित करताना आकार अनिवार्य नाही. म्हणून आम्ही खाली दिलेल्या प्रमाणे वरील कोड लिहू शकतो:
Axar saiPca[]={'jae', 'A', 'A', 'A', 'Ti', 'pai', 'Aae', 'mai', 'Pna', 'Ti', '\0'};
आम्ही सी भाषेत अक्षरशः स्ट्रिंगद्वारे स्ट्रिंग देखील परिभाषित करू शकतो. उदाहरणार्थ:
Axar saiPca[]="TikenTek";
अशा परिस्थितीत, कंपाईलरद्वारे स्ट्रिंगच्या शेवटी '\ 0' जोडले जाईल.
चार अॅरे आणि स्ट्रिंग शाब्दिक दरम्यान फरक
चार अॅरे आणि शाब्दिक दरम्यान दोन मुख्य फरक आहेत. आम्हाला अॅरेच्या शेवटी शून्य वर्ण '\ 0' जोडण्याची आवश्यकता आहे जेव्हा ते कॅरेक्टर अॅरेच्या बाबतीत कंपाईलरद्वारे अंतर्गतपणे जोडले जाते. स्ट्रिंग शाब्दिक वर्णांच्या दुसर्या संचावर पुन्हा नियुक्त केले जाऊ शकत नाही, तर आम्ही अॅरेच्या वर्णांना पुन्हा नियुक्त करू शकतो.
सी मध्ये स्ट्रिंग उदाहरण
चला एक साधे उदाहरण पाहूया जेथे एक स्ट्रिंग घोषित केली जाते आणि मुद्रित केली जाते. '%एस' सी भाषेतील स्ट्रिंगसाठी स्वरूप निर्दिष्ट म्हणून वापरला जातो.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
#vaapara <SabD.Pca>
paunaZ mauqya(){
Axar saiPca[11]={'jae', 'A', 'A', 'A', 'Ti', 'pai', 'Aae', 'mai', 'Pna', 'Ti', '\0'};
Axar saiPcaR2[11]="TikenTek";
laiha("caar AWre maulya Aahe: %SabD\n", saiPca);
laiha("sTiMga SaabDik maulya Aahe: %SabD\n", saiPcaR2);
vaapasakra 0;
}
आउटपुट
caar AWre maulya Aahe: TikenTek
sTiMga SaabDik maulya Aahe: TikenTek
ट्रॅव्हर्सिंग स्ट्रिंग
कोणत्याही प्रोग्रामिंग भाषांमध्ये स्ट्रिंग ट्रॅव्हर्स करणे ही सर्वात महत्वाची बाब आहे. आम्हाला मजकूर फिरवून केला जाऊ शकतो अशा एका मोठ्या मजकूरामध्ये फेरफार करण्याची आवश्यकता असू शकते. ट्रॅव्हर्सिंग स्ट्रिंग पूर्णांक अॅरेच्या ट्रॅव्हर्सिंगपेक्षा काहीसे भिन्न आहे. पूर्णांक अॅरेला ओलांडण्यासाठी आम्हाला अॅरेची लांबी माहित असणे आवश्यक आहे, तर स्ट्रिंगच्या बाबतीत आपण स्ट्रिंगच्या बाबतीत शून्य वर्ण वापरू शकतो आणि लूप संपुष्टात आणू शकतो. म्हणूनच, स्ट्रिंगला ओलांडण्याचे दोन मार्ग आहेत. स्ट्रिंगची लांबी वापरुन शून्य वर्ण वापरुन. त्या प्रत्येकावर चर्चा करूया.
स्ट्रिंगची लांबी वापरणे
स्ट्रिंगमध्ये स्वरांची संख्या मोजण्याचे एक उदाहरण पाहूया.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar Psa[11] = "TikenTek";
paunaZ mai = 0;
paunaZ maaejanai = 0;
jaeMvhpayaZMta(mai<11)
{
jar(Psa[mai]=='A' || Psa[mai] == 'EZ' || Psa[mai] == 'mai' || Psa[mai] == 'yau' || Psa[mai] == 'Aae')
{
maaejanai ++;
}
mai++;
}
laiha("D kzmaaMk cyaa svar %paunaZ",maaejanai);
}
आउटपुट
D kzmaaMk cyaa svar 4
शून्य वर्ण वापरणे
शून्य वर्ण वापरुन स्वरांची संख्या मोजण्याचे समान उदाहरण पाहूया.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar Psa[11] = "TikenTek";
paunaZ mai = 0;
paunaZ maaejanai = 0;
jaeMvhpayaZMta(Psa[mai] != Saunya)
{
jar(Psa[mai]=='A' || Psa[mai] == 'EZ' || Psa[mai] == 'mai' || Psa[mai] == 'yau' || Psa[mai] == 'Aae')
{
maaejanai ++;
}
mai++;
}
laiha("D kzmaaMk cyaa svar %paunaZ",maaejanai);
}
आउटपुट
D kzmaaMk cyaa svar 4
इनपुट म्हणून स्ट्रिंग स्वीकारणे
आतापर्यंत आम्ही वापरकर्त्याचे इनपुट स्वीकारण्यासाठी स्कॅनफचा वापर केला आहे. तथापि, हे तारांच्या बाबतीत देखील वापरले जाऊ शकते परंतु एका वेगळ्या परिस्थितीसह. खाली दिलेल्या कोडचा विचार करा जो स्पेसचा सामना करत असताना स्ट्रिंग संचयित करतो.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar Psa[20];
laiha("pzavaiST kra D sTiMga?");
vacaa("%SabD",Psa);
laiha("Aapana pzavaiST %SabD",Psa);
}
आउटपुट
pzavaiSTRkra D SabD?TikenTek Aahe D savaaZetST
Aapana pzavaiST TikenTek
आउटपुटवरून हे स्पष्ट झाले आहे की, वरील कोड स्पेस विभक्त तारांसाठी कार्य करणार नाही. स्पेस विभक्त तारांसाठी हा कोड कार्य करण्यासाठी, स्कॅनफ फंक्शनमध्ये आवश्यक किरकोळ बदलण्यासाठी, म्हणजेच, स्कॅन्फ ("%एस", एस) लिहिण्याऐवजी, आम्ही लिहिणे आवश्यक आहे: स्कॅनफ ("%[\ \ n] s", s) जे कंपाईलरला स्ट्रिंग एस संचयित करण्यास सूचित करते जेव्हा नवीन ओळ (\ n) सामोरे जाते. स्पेस-विभक्त तार संचयित करण्यासाठी खालील उदाहरणांचा विचार करूया.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar Psa[20];
laiha("pzavaiST kra D sTiMga?");
vacaa("%[^\n]s",Psa);
laiha("Aapana pzavaiST %SabD",Psa);
}
आउटपुट
pzavaiSTRkra D SabD?TikenTek Aahe D savaaZetST
Aapana pzavaiST TikenTek Aahe D savaaZetST
येथे आपण हे देखील लक्षात घेतले पाहिजे की स्ट्रिंग एस एक स्ट्रिंग संचयित करण्यासाठी आम्हाला स्कॅनफमध्ये (&) ऑपरेटरचा पत्ता वापरण्याची आवश्यकता नाही कारण स्ट्रिंग एस वर्णांचा एक अॅरे आहे आणि अॅरेचे नाव आहे, म्हणजेच, स्ट्रिंगचा आधार पत्ता (कॅरेक्टर अॅरे) दर्शवितो म्हणून आम्हाला वापरण्याची आवश्यकता नाही आणि त्यासह.
काही महत्त्वाचे मुद्दे
तथापि, खालील बिंदू आहेत जे स्कॅनफ वापरुन तारांमध्ये प्रवेश करताना लक्षात घ्यावे. कंपाईलर कॅरेक्टर अॅरेवर चेकिंग करत नाही. म्हणूनच, अशी एक घटना असू शकते जिथे स्ट्रिंगची लांबी वर्ण अॅरेच्या परिमाणांपेक्षा जास्त असू शकते जे नेहमीच काही महत्त्वपूर्ण डेटा अधिलिखित करू शकते. स्कॅनफ वापरण्याऐवजी आम्ही हेडर फाइल स्ट्रिंग.एच मध्ये परिभाषित केलेले इनबिल्ट फंक्शन आहे (जी SabD_vaacaa () वापरू शकतो. गेट्स () एकावेळी फक्त एक स्ट्रिंग प्राप्त करण्यास सक्षम आहे.
तारांसह पॉईंटर्स
आम्ही आतापर्यंत अॅरे, फंक्शन्स आणि आदिम डेटा प्रकारांसह पॉईंटर्स वापरले आहेत. तथापि, पॉईंटर्सचा वापर तारांकडे निर्देशित करण्यासाठी केला जाऊ शकतो. पॉइंट्स बिंदू करण्यासाठी पॉईंटर्स वापरण्याचे विविध फायदे आहेत. पॉईंटरद्वारे स्ट्रिंगमध्ये प्रवेश करण्यासाठी खालील उदाहरणाचा विचार करूया.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar Psa[11] = "TikenTek";
Axar *pai = Psa; // paEZMTr pai Aahe paEMTiMga Tu SabD Psa.
laiha("%SabD",pai); // D SabD TikenTek Aahe mauita jar Aamhi mauna pai.
}
आउटपुट
TikenTek
आम्हाला माहित आहे की स्ट्रिंग ही वर्णांची एक अॅरे आहे, पॉईंटर्स त्याच प्रकारे वापरल्या जाऊ शकतात ज्याप्रमाणे ते अॅरेसह वापरले गेले होते. वरील उदाहरणात, पी वर्णांच्या अॅरेचे पॉईंटर म्हणून घोषित केले गेले आहे. एस एस प्रमाणेच प्रभावित करते कारण एस स्ट्रिंगचा आधार पत्ता आहे आणि अंतर्गतपणे पॉईंटर म्हणून मानला जातो. तथापि, आम्ही एसची सामग्री बदलू शकत नाही किंवा एसची सामग्री थेट दुसर्या स्ट्रिंगमध्ये कॉपी करू शकत नाही. या हेतूसाठी, आम्हाला तार संचयित करण्यासाठी पॉईंटर्स वापरण्याची आवश्यकता आहे. खालील उदाहरणात, आम्ही स्ट्रिंगची सामग्री दुसर्यामध्ये कॉपी करण्यासाठी पॉईंटर्सचा वापर दर्शविला आहे.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar *pai = "hWlaae TikenTek";
laiha("sTiMga p: %SabD\n",pai);
Axar *pzaSna;
laiha("kpai krta Aahe D saamagazi cyaa p maoyae q...\n");
pzaSna = pai;
laiha("sTiMga q: %SabD\n",pzaSna);
}
आउटपुट
sTiMga pai: hWlaae TikenTek
kpaiRkrtaRAahe D saamagazi cyaa pai maoyae pzaSna...
sTiMga pzaSna: hWlaae TikenTek
एकदा स्ट्रिंगची व्याख्या झाल्यानंतर, ती वर्णांच्या दुसर्या संचावर पुन्हा नियुक्त केली जाऊ शकत नाही. तथापि, पॉईंटर्स वापरुन आम्ही वर्णांचा संच स्ट्रिंगला नियुक्त करू शकतो. खालील उदाहरणाचा विचार करा.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
qaalai mauqya ()
{
Axar *pai = "hWlaae TikenTek";
laiha("Aaoai naiyauKta: %SabD\n",pai);
pai = "hWlaae";
laiha("naMtar naiyauKta: %SabD\n",pai);
}
आउटपुट
Aaoai naiyauKta: hWlaae TikenTek
naMtar naiyauKta: hWlaae